# libcroco.m4 serial 3
dnl Copyright (C) 2006-2007, 2019 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.

dnl From Bruno Haible.

dnl gl_LIBCROCO
dnl   gives the user the option to decide whether to use the included or
dnl   an external libcroco.
dnl gl_LIBCROCO(FORCE-INCLUDED)
dnl   forces the use of the included or an external libcroco.
AC_DEFUN([gl_LIBCROCO],
[
  ifelse([$1], [yes], , [
    dnl libcroco depends on libglib.
    AC_REQUIRE([gl_LIBGLIB])
  ])

  ifelse([$1], , [
    AC_MSG_CHECKING([whether included libcroco is requested])
    AC_ARG_WITH([included-libcroco],
      [  --with-included-libcroco  use the libcroco included here],
      [gl_cv_libcroco_force_included=$withval],
      [gl_cv_libcroco_force_included=no])
    AC_MSG_RESULT([$gl_cv_libcroco_force_included])
  ], [gl_cv_libcroco_force_included=$1])

  gl_cv_libcroco_use_included="$gl_cv_libcroco_force_included"
  LIBCROCO=
  LTLIBCROCO=
  INCCROCO=
  ifelse([$1], [yes], , [
    if test "$gl_cv_libcroco_use_included" != yes; then
      dnl Figure out whether we can use a preinstalled libcroco-0.6, or have to
      dnl use the included one.
      AC_CACHE_VAL([gl_cv_libcroco], [
        gl_cv_libcroco=no
        gl_cv_LIBCROCO=
        gl_cv_LTLIBCROCO=
        gl_cv_INCCROCO=
        gl_save_LIBS="$LIBS"
        dnl Search for libcroco and define LIBCROCO_0_6, LTLIBCROCO_0_6 and
        dnl INCCROCO_0_6 accordingly.
        dnl Don't use croco-0.6-config nor pkg-config, since it doesn't work when
        dnl cross-compiling or when the C compiler in use is different from the
        dnl one that built the library.
        AC_LIB_LINKFLAGS_BODY([croco-0.6], [glib-2.0])
        LIBS="$gl_save_LIBS $LIBCROCO_0_6"
        AC_TRY_LINK([#include <libcroco-config.h>],
          [const char *version = LIBCROCO_VERSION; return !version;],
          [gl_cv_libcroco=yes
           gl_cv_LIBCROCO="$LIBCROCO_0_6"
           gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
          ])
        if test "$gl_cv_libcroco" != yes; then
          gl_save_CPPFLAGS="$CPPFLAGS"
          CPPFLAGS="$CPPFLAGS $INCCROCO_0_6"
          AC_TRY_LINK([#include <libcroco-config.h>],
            [const char *version = LIBCROCO_VERSION; return !version;],
            [gl_cv_libcroco=yes
             gl_cv_LIBCROCO="$LIBCROCO_0_6"
             gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
             gl_cv_INCCROCO="$INCCROCO_0_6"
            ])
          if test "$gl_cv_libcroco" != yes; then
            dnl Often the include files are installed in
            dnl /usr/include/libcroco-0.6/libcroco.
            AC_TRY_LINK([#include <libcroco-0.6/libcroco/libcroco-config.h>],
              [const char *version = LIBCROCO_VERSION; return !version;],
              [gl_ABSOLUTE_HEADER([libcroco-0.6/libcroco/libcroco-config.h])
               libcroco_include_dir=`echo "$gl_cv_absolute_libcroco_0_6_libcroco_libcroco_config_h" | sed -e 's,.libcroco-config\.h$,,'`
               if test -d "$libcroco_include_dir"; then
                 gl_cv_libcroco=yes
                 gl_cv_LIBCROCO="$LIBCROCO_0_6"
                 gl_cv_LTLIBCROCO="$LTLIBCROCO_0_6"
                 gl_cv_INCCROCO="-I$libcroco_include_dir"
               fi
              ])
          fi
          CPPFLAGS="$gl_save_CPPFLAGS"
        fi
        LIBS="$gl_save_LIBS"
      ])
      AC_MSG_CHECKING([for libcroco])
      AC_MSG_RESULT([$gl_cv_libcroco])
      if test $gl_cv_libcroco = yes; then
        LIBCROCO="$gl_cv_LIBCROCO"
        LTLIBCROCO="$gl_cv_LTLIBCROCO"
        INCCROCO="$gl_cv_INCCROCO"
      else
        gl_cv_libcroco_use_included=yes
      fi
    fi
  ])
  AC_SUBST([LIBCROCO])
  AC_SUBST([LTLIBCROCO])
  AC_SUBST([INCCROCO])
  AC_MSG_CHECKING([whether to use the included libcroco])
  AC_MSG_RESULT([$gl_cv_libcroco_use_included])

  AM_CONDITIONAL([INCLUDED_LIBCROCO],
    [test "$gl_cv_libcroco_use_included" = yes])
])
